package com.ccit.greenlife.utils;

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

public class Md5Util {
    /**
     * 对输入字符串进行MD5加密。
     *
     * @param input 需要加密的字符串
     * @return 加密后的字符串
     */
    public static String toHexString(byte[] bytes) {
        StringBuilder hexString = new StringBuilder();
        for (byte b : bytes) {
            String hex = Integer.toHexString(0xff & b);
            if (hex.length() == 1) {
                hexString.append('0');
            }
            hexString.append(hex);
        }
        return hexString.toString();
    }

    /**
     * 对输入字符串进行MD5加密。
     *
     * @param input 需要加密的字符串
     * @return MD5加密后的字符串
     */
    public static String md5(String input) {
        try {
            // 获取 MD5 算法的 MessageDigest 实例
            MessageDigest md = MessageDigest.getInstance("MD5");

            // 对输入字符串进行 MD5 散列运算
            byte[] messageDigest = md.digest(input.getBytes());
            // 将散列值转换为十六进制字符串并返回
            return toHexString(messageDigest);
        } catch (NoSuchAlgorithmException e) {
            // 如果指定的加密算法不存在，则抛出运行时异常
            throw new RuntimeException(e);
        }
    }

    // 主方法，用于测试md5方法
    public static void main(String[] args) {
        String password = "1234";
        String encryptedPassword = md5(password);
        System.out.println("Original: " + password);
        System.out.println("MD5 Hash: " + encryptedPassword);
    }
}
